﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using NhaHangKhachSan.Web.Classes;

namespace NhaHangKhachSan.Web
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "NhaHangKhachSanService" in code, svc and config file together.
    
    public class PhongDatResult
    {
        public string maPhong{get; set; }
        public string tenPhong{get; set; }
        //public Decimal donGia{get; set; }
        public string maNhom{get; set; }
        public string maKV{get; set; }
    }

    public class NhaHangKhachSanService : INhaHangKhachSanService
    {
        public List<PhongDatResult> GetDSPhongTrong(DateTime ngayNhanPhong)
        {
            Utilities u = new Utilities();
            //
            var datPhongs = new List<PhongDatResult>();
            //
            NhaHangKhachSanDataDataContext nhksData = new NhaHangKhachSanDataDataContext();
            var phongs=from p in nhksData.PHONGs
                       select p;
            //
            foreach (var ph in phongs)
            {
                var temp=new PhongDatResult();
                //0: con trong; 1: da dat; 2: co khach o; 3: sua chua
                if(ph.TrangThai==0)
                {
                    temp.maPhong = ph.MaPhong;
                    temp.tenPhong = ph.TenPhong;
                    temp.maNhom = ph.MaNP;
                    temp.maKV = ph.MaKV;
                    datPhongs.Add(temp);
                }
                else if(ph.TrangThai==1)
                {
                    string _maphong = ph.MaPhong;
                    var dps=from dp in nhksData.DATPHONGs
                            join ctdp in nhksData.CHITIETDATPHONGs on dp.MaDatPhong equals ctdp.MaDatPhong
                            where ctdp.MaPhong==_maphong
                            select dp;
                    foreach (var datphong in dps)
                    {
                        //ngay hien tai
                        string[] ngayHT = DateTime.Now.ToShortDateString().Split('/');
                        int ngay1 = Convert.ToInt32(ngayHT[1]);
                        int thang1 = Convert.ToInt32(ngayHT[0]);
                        int nam1 = Convert.ToInt32(ngayHT[2]);
                        //ngay nhan phong
                        string[] ngayNP=Convert.ToDateTime(datphong.NgayNhanPhong).ToShortDateString().Split('/');
                        int ngay2 = Convert.ToInt32(ngayNP[1]);
                        int thang2 = Convert.ToInt32(ngayNP[0]);
                        int nam2 = Convert.ToInt32(ngayNP[2]);
                        //khoang cach ngay hien tai den ngay nhan phong>=0: chua nhan phong
                        if (u.KhoangCachHaiNgay(ngay1, thang1, nam1, ngay2, thang2, nam2) >= 0)
                        {
                            //ngay tra phong
                            string[] ngayTP = Convert.ToDateTime(datphong.NgayTraPhong).ToShortDateString().Split('/');
                            int ngaytp = Convert.ToInt32(ngayTP[1]);
                            int thangtp = Convert.ToInt32(ngayTP[0]);
                            int namtp = Convert.ToInt32(ngayTP[2]);
                            //
                            string[] ngayDP = ngayNhanPhong.ToShortDateString().Split('/');
                            int ngaydp = Convert.ToInt32(ngayDP[1]);
                            int thangdp = Convert.ToInt32(ngayDP[0]);
                            int namdp = Convert.ToInt32(ngayDP[2]);
                            if(u.KhoangCachHaiNgay(ngaytp, thangtp, namtp, ngaydp, thangdp, namdp)>=0)
                            {
                                temp.maPhong = ph.MaPhong;
                                temp.tenPhong = ph.TenPhong;
                                temp.maNhom = ph.MaNP;
                                temp.maKV = ph.MaKV;
                                datPhongs.Add(temp);
                            }
                        }                      
                    }
                }
                else if(ph.TrangThai==2)
                {
                    var nhanphongs=from nhanphong in nhksData.PHIEUNHANPHONGs
                                   join ctnhanphong in nhksData.CTPHIEUNHANPHONGs on nhanphong.MaPhieuNP equals ctnhanphong.MaPhieuNP
                                   where ctnhanphong.MaPhong==ph.MaPhong
                                   select nhanphong;
                    foreach (var np in nhanphongs)
                    {
                        //ngay tra phong trong phieu nhan phong
                        string[] ngayTP = Convert.ToDateTime(np.NgayTraPhong).ToShortDateString().Split('/');
                        int ngaytp = Convert.ToInt32(ngayTP[1]);
                        int thangtp = Convert.ToInt32(ngayTP[0]);
                        int namtp = Convert.ToInt32(ngayTP[2]);
                        //ngay nhan phong trong phieu dat
                        string[] ngayDP = ngayNhanPhong.ToShortDateString().Split('/');
                        int ngaydp = Convert.ToInt32(ngayDP[1]);
                        int thangdp = Convert.ToInt32(ngayDP[0]);
                        int namdp = Convert.ToInt32(ngayDP[2]);
                        if(u.KhoangCachHaiNgay(ngaytp, thangtp, namtp, ngaydp, thangdp, namdp)>=0)
                        {
                            temp.maPhong = ph.MaPhong;
                            temp.tenPhong = ph.TenPhong;
                            temp.maNhom = ph.MaNP;
                            temp.maKV = ph.MaKV;
                            datPhongs.Add(temp);
                        }
                    }                  
                }
            }
            return datPhongs;
        }
    }
}
